package com.gobang.test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 日志测试控制器
 * 用于测试和演示日志功能
 * 
 * @author System
 * @version 1.0.0
 */
@RestController
@RequestMapping("/test/log")
public class LogTestController {
    
    private static final Logger logger = LoggerFactory.getLogger(LogTestController.class);
    
    @Autowired
    private LoggingExample loggingExample;
    
    /**
     * 测试基本日志功能
     */
    @GetMapping("/basic")
    public String testBasicLogging() {
        logger.info("收到日志测试请求 - 基本功能");
        loggingExample.demonstrateLogLevels();
        logger.info("基本日志功能测试完成");
        return "基本日志功能测试完成，请查看控制台输出";
    }
    
    /**
     * 测试参数化日志
     */
    @GetMapping("/parameterized")
    public String testParameterizedLogging() {
        logger.info("收到日志测试请求 - 参数化日志");
        loggingExample.demonstrateParameterizedLogging();
        logger.info("参数化日志测试完成");
        return "参数化日志功能测试完成，请查看控制台输出";
    }
    
    /**
     * 测试异常日志
     */
    @GetMapping("/exception")
    public String testExceptionLogging() {
        logger.info("收到日志测试请求 - 异常日志");
        loggingExample.demonstrateExceptionLogging();
        logger.info("异常日志测试完成");
        return "异常日志功能测试完成，请查看控制台输出";
    }
    
    /**
     * 测试业务流程日志
     */
    @GetMapping("/business")
    public String testBusinessLogging() {
        logger.info("收到日志测试请求 - 业务流程日志");
        loggingExample.demonstrateBusinessFlowLogging();
        logger.info("业务流程日志测试完成");
        return "业务流程日志功能测试完成，请查看控制台输出";
    }
    
    /**
     * 测试MDC功能
     */
    @GetMapping("/mdc")
    public String testMDC() {
        logger.info("收到日志测试请求 - MDC功能");
        loggingExample.demonstrateMDC();
        logger.info("MDC功能测试完成");
        return "MDC功能测试完成，请查看控制台输出";
    }
    
    /**
     * 测试所有日志功能
     */
    @GetMapping("/all")
    public String testAllLogging() {
        logger.info("=== 开始完整日志功能测试 ===");
        
        loggingExample.demonstrateLogLevels();
        loggingExample.demonstrateParameterizedLogging();
        loggingExample.demonstrateExceptionLogging();
        loggingExample.demonstrateConditionalLogging();
        loggingExample.demonstrateMDC();
        loggingExample.demonstrateBusinessFlowLogging();
        
        logger.info("=== 完整日志功能测试结束 ===");
        return "所有日志功能测试完成，请查看控制台输出";
    }
} 